package learn.config;

import ch.qos.logback.core.db.DBHelper;
import learn.bean.Pets;
import learn.bean.OldUser;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.*;

/**
 * @author yxc
 * @description: 配置类 也是组件
 * 内部的 proxyBeanMethods 是否代理方法
 * full 全配置 proxyBeanMethods = true 减少实例化对象 cglib代理
 * lite 轻量级 proxyBeanMethods = false  减少检查  加快启动 非代理
 * 场景：组件依赖
 * @date 2021/12/25
 */

/**
 * @Import 给容器中创建所导入的组建 默认组件名字是全类名 加到容器中
 */
@Import({OldUser.class, DBHelper.class})
@Configuration(proxyBeanMethods = true)
/**
 * classpath:bean.xml 导入xml配置重新解析，加入到容器
 */
@ImportResource
/**
 * 此注解要在配置类,适合改动第三方包 类
 * 1、开启car的属性配置功能 配置绑定
 * 2、把这个组件car自动注册到容器中
 */
//@EnableConfigurationProperties(Car.class)
public class MyConfig {
    // 容器中 有 tom组件 ，才添加 user01
//    @ConditionalOnBean(name = "tom")
    @ConditionalOnMissingBean(name = "tom")
    @Bean //给容器添加组建，方法名作为组建id
    public OldUser user01() {

        return new OldUser("zhangsan", 18, tomcatPet());
    }

    @Bean("userCustom") //给容器添加组建，方法名作为组建id
    public OldUser user02() {
        return new OldUser("zhangsan", 18);
    }

    //    @Bean("tom")
    public Pets tomcatPet() {
        return new Pets("tom");
    }
}
